package com.minglv.mini.service.impl;

import com.minglv.mini.domain.User;
import com.minglv.mini.domain.dto.UserBo;
import com.minglv.mini.domain.dto.UserDto;
import com.minglv.mini.mapper.UserMapper;
import com.minglv.mini.service.IUserService;
import com.minglv.mini.tools.JWTUtils;
import com.minglv.mini.tools.MiniResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Service
public class UserServiceImpl implements IUserService {



    @Autowired
    private UserMapper userMapper;


    @Override
    public Map getInfo(Long userId) {
        Map userMap = userMapper.getUserMap(userId);
        Map user_level = userMapper.getUserLevelMap(Long.valueOf(userMap.get("user_level").toString()));
        userMap.put("user_level",user_level);
        //为了小程序发布通过，这里设置一个isShowNeedBtn，用于判断是否显示需要按钮
        userMap.put("isShowNeedBtn", false);
        return userMap;
    }

    @Override
    public Object postSave(String token, UserDto userDto) {
        Long userId = JWTUtils.getUserid(token);
        User user = userMapper.selectUserById(userId);
        user.setNickname(userDto.getNickname());
        user.setAvatar(userDto.getAvatar());
        user.setRealname(userDto.getRealname());
        user.setPhone(userDto.getPhone());
        user.setUpdatedAt(new Date());
        userMapper.updateUser(user);
        return new MiniResult(200,"保存成功",null);
    }


    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public User selectUserById(Long id)
    {
        return userMapper.selectUserById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     *
     * @param user 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<User> selectUserList(UserBo user)
    {
        List<User> users = userMapper.selectUserList(user.getUserLevel(), user.getSearch(), user.getIsInformation());
        return users;
    }

    /**
     * 新增【请填写功能名称】
     *
     * @param user 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertUser(User user)
    {
        return userMapper.insertUser(user);
    }

    /**
     * 修改【请填写功能名称】
     *
     * @param user 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateUser(User user)
    {
        return userMapper.updateUser(user);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteUserByIds(Long[] ids)
    {
        return userMapper.deleteUserByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     *
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteUserById(Long id)
    {
        return userMapper.deleteUserById(id);
    }
}
